package com.ruoyi.yf.service;

import com.ruoyi.system.domain.SysDept;
import com.ruoyi.system.domain.SysDistricts;
import com.ruoyi.yf.domain.YfHospitalStatus;
import com.ruoyi.yf.domain.YfStorageWarning;
import java.util.List;

/**
 * 机构部门预警量配置Service接口
 * 
 * @author XiaoYi...
 * @date 2020-06-02
 */
public interface IYfStorageWarningService 
{
    /**
     * 查询机构部门预警量配置
     * 
     * @param id 机构部门预警量配置ID
     * @return 机构部门预警量配置
     */
    public YfStorageWarning selectYfStorageWarningById(Long id);

    /**
     * 查询机构部门预警量配置列表
     * 
     * @param yfStorageWarning 机构部门预警量配置
     * @return 机构部门预警量配置集合
     */
    public List<YfStorageWarning> selectYfStorageWarningList(YfStorageWarning yfStorageWarning);

    /**
     * 查询院内所有医废类型预警量配置列表
     *
     */
    public List<YfStorageWarning> selectYfTypeStorageWarningList(YfStorageWarning yfStorageWarning);

    /**
     * 新增机构部门预警量配置
     * 
     * @param yfStorageWarning 机构部门预警量配置
     * @return 结果
     */
    public int insertYfStorageWarning(YfStorageWarning yfStorageWarning);

    /**
     * 修改机构部门预警量配置
     * 
     * @param yfStorageWarning 机构部门预警量配置
     * @return 结果
     */
    public int updateYfStorageWarning(YfStorageWarning yfStorageWarning);

    /**
     * 批量删除机构部门预警量配置
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteYfStorageWarningByIds(String ids);

    /**
     * 删除机构部门预警量配置信息
     * 
     * @param id 机构部门预警量配置ID
     * @return 结果
     */
    public int deleteYfStorageWarningById(Long id);


    /**
     * 根据医院id查询医院暂存点
     * @return
     */
    List<SysDept> getStangsByHospitalId(Long hospitalId);

    /**
     * 查询登录用户所在机构的地区的下辖区县
     */
    List<SysDistricts> getCountyByDistrictsId(String flag, Integer districtsId);


    /**
     * 医院暂存点状况
     */
    List<YfHospitalStatus> hospitalStatusList(Long deptId,YfHospitalStatus yfHospitalStatus);

    /**
     * 单个医院暂存点状况
     */
    List<YfHospitalStatus> hospitalStatus(Long deptId);

    /**
     * 获取医院
     */
    List<SysDept> getHospital(Long deptId);

    /**
     * 院内超期未录入配置列表
     */
    List<YfHospitalStatus> hospitalOverdueNotinputList(Long deptId, String selectType, YfHospitalStatus yfHospitalStatus);

    /**
     * 预警开关修改
     */
    int changeOverdueNotinputSwitchStatus(Long stagingId, String status);

    /**
     * 修改超期未录入预警
     */
    int updateOverdueNotinput(SysDept sysDept);

    // 根据暂存点查询超过48小时未出库的科室
    String getKsNamesByStangId(Long stagingId);


    // 市卫健委及以上，辖区内各医院暂存点状况
    List<YfHospitalStatus> districtsWarnStatusList(Long disId);

    // 市卫健委及以上，辖区内各医院暂存点状况（只包括科室类型为10产生的医废）
    List<YfHospitalStatus> districtsCityHospitalInDeptWarnStatusList(Long disId);

    //  市卫健委及以上，添加科室中的医疗机构（统计科室，无需合并暂存点）
    List<YfHospitalStatus> districtsCityHospitalInKSWarnStatusList(Long disId);


    // 区县级卫健局 -- 显示区县级卫健局下辖医院预警状况（统计到暂存点）
    List<YfHospitalStatus> districtsHospitalWarnStatusList(Long disId);

    // 区县级卫健局，辖区内各医院暂存点状况（只包括科室类型为10产生的医废）
    List<YfHospitalStatus> districtsCountyHospitalInDeptWarnStatusList(Long disId);

    // 区县级卫健局，添加科室中的医疗机构（统计科室，无需合并暂存点）
    List<YfHospitalStatus> districtsCountyHospitalInKSWarnStatusList(Long disId);


    // 机构层级权限内各医院暂存点状况（科室类型为10的医废）
    List<YfHospitalStatus> deptHospitalInDeptWarnStatusList(Long deptId);

    // 机构层级权限内各医院的科室中的医疗机构状况（科室类型20到50，无需合并暂存点）
    List<YfHospitalStatus> deptHospitalInKSWarnStatusList(Long deptId);

}
